The term streaming media describes the playback of media on a playback device, where the media is stored on a server and is sent to the playback device over a network during playback. Typically, the playback device stores a sufficient quantity of media in a buffer at any given time during playback to prevent disruption of playback due to the playback device completing playback of all the buffered media prior to receipt of the next portion of media. Adaptive bitrate streaming or adaptive streaming involves detecting the present streaming conditions (e.g. the user's network bandwidth and CPU capacity) in real time and adjusting the bitrate of the streamed media accordingly. Typically, the source media is encoded at multiple bit rates and the playback device or client switches between streaming the different encodings depending on available resources.
Existing Hypertext Transfer Protocol (HTTP) based adaptive bitrate streaming systems may employ protocols such as MPEG Dynamic-Adaptive-Streaming-over-HTTP (MPEG DASH) and HTTP Live Streaming (HLS) and employ video encoders to compress the video at one or more bitrates to generate multiple streams in accordance with HTTP adaptive streaming principles. The client media players may choose one of these bitrates based on the bandwidth available at the client to improve the playback performance compared to progressive streaming systems, which stream content encoded at single maximum bitrate and cannot switch to streams encoded at lower or higher maximum bitrates in response to changes in available network bandwidth.
Streams of content utilized in adaptive bitrate streaming systems are typically encoded at target bitrates. These streams are typically one of the bitrates in ABR encoded video. Target bitrates include an anticipated maximum bitrate that a user may obtain while streaming content. Streams are typically encoded in a non-uniform manner, but contain an average bitrate. Streams are also usually encoded where the stream has an average bitrate that approaches the maximum bitrate. These maximum bitrates therefore, are generally used to make stream switching decisions.
The video encoders are typically configured to generate constant bitrate (CBR) streams. In CBR encoding, also referred to as capped-VBR in literature, the bitrate measured over a specific duration, such as 1 second, is not allowed to exceed a certain threshold above the maximum bitrate while the bitrate can go below the maximum bitrate by any amount. In such CBR schemes, the quality of a video content may depend on the complexity of scenes in the video content and can vary at a given constant bitrate. For example, scenes with low complexity may show good quality while a highly complex scene may have relatively low quality.
Streams utilized in adaptive bitrate streaming are typically segmented, which may include splitting the streams into short duration segments of equal duration in each of the alternative streams. The segments can be packaged in container files formatted in accordance with the requirements of the standards such as MPEG DASH or HLS. These segments can then be published to a HTTP server for distribution.